iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
自我挑戰組

30天初探tensorflow之旅系列 第 12

Day 12 熟悉 MNIST 手寫數字辨識資料集

  • 分享至 

  • xImage
  •  

MNIST(Modified National Institute of Standards and Technology)是一個廣泛使用的手寫數字識別資料集。它通常用來訓練和測試各種機器學習和深度學習模型,主要是用於各種圖像處理系統,這些圖像大小為 28x28 像素。而因為它相較簡單和普遍,便成為了許多算法的基準測試資料集,尤其是在深度學習和卷積神經網絡領域。

MNIST 資料集的特點包括:
數據量:70,000 張圖像中,60,000 張用於訓練,10,000 張用於測試。
類別:圖像表示 0 到 9 的數字,總共 10 個類別。

import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255

y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)
y_test = tf.keras.utils.to_categorical(y_test, num_classes=10)

print('Training data shape:', x_train.shape)
print('Testing data shape:', x_test.shape)

標準化是為了將像素值從 [0, 255] 轉換到 [0, 1] 範圍,有助於加快模型訓練速度。
而將標籤轉換為 one-hot 格式,能使每個數字對應一個長度為 10 的向量。

最後會得到:

Training data shape: (60000, 28, 28)
Testing data shape: (10000, 28, 28)

接下來看一下 MNIST 中的手寫數字圖像,可以使用 matplotlib 庫來顯示圖片:

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf

mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

plt.figure(figsize=(10, 2))
for i in range(10):
    plt.subplot(1, 10, i + 1)
    plt.imshow(x_train[i], cmap='gray')
    plt.axis('off')
    plt.title(f'Label: {y_train[i]}')
    
plt.show()

◆plt.figure(figsize=(10, 2)) 是設置繪圖的大小。
◆plt.subplot(1, 10, i + 1) 用來創建 1 行 10 列的子圖,一個子圖一個手寫數字。
◆plt.imshow(x_train[i], cmap='gray') 顯示圖像,灰度色彩映射。
◆plt.axis('off') 關閉坐標軸顯示。

讓它一次印出前 10 張手寫數字圖像及其標籤。
https://ithelp.ithome.com.tw/upload/images/20240926/20169330lQTlvbadbQ.png
如果要將它轉換成數字:

numeric_labels = y_train[:10]
print('Numeric labels:', numeric_labels)

就可以得到:

Numeric labels: [5 0 4 1 9 2 1 3 1 4]

以上是關於 MNIST 手寫數字辨識資料集的介紹和基礎操作。


上一篇
Day 11 線性回歸
下一篇
Day 13 實作Softmax模型
系列文
30天初探tensorflow之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言